<?php

// Diese Klasse kuemmert sich um die korrekte Darstellung mehrerer Ziffern (also einer Zahl)
class WSB_Captcha_Number
{

  var $num = 0; // Zahl, die dargestellt werden soll
  var $digits = array(); // Enthaelt spaeter fuer jede Stelle ein Digit-Objekt

  // Konstruktor; nimmt direkt die darzustellende Zahl entgegen.
  function __construct( $num )
	{
    $this->num = (int)$num; // Zur Sicherheit in ganze Zahl umwandeln

    $r = "{$this->num}"; // In Zeichenkette konvertieren

    // Jetzt fuer jede Stelle der Zahl ein Digit-Objekt erzeugen
    for( $i=0; $i<strlen($r); $i++ )
      $this->digits[] = new WSB_Captcha_Number_Digit((int)$r[$i]);
  }

  // Liefert einfach die Zahl, die dargestellt wird.
  function getNum() { return $this->num; }

  // Gibt die Zeilen aller Ziffern nacheinander aus; also erst alle ersten, dann alle zweiten Zeilen usw.
  function printNumber()
	{
    for($row=0; $row<count($this->digits[0]->matrix); $row++) {
      print("<div class=\"captcha-line\">");
      foreach( $this->digits AS $digit ) {
        foreach($digit->matrix[$row] AS $cell)
          if($cell === 1) // 1 bedeutet, die Zelle soll aktiv sein (=schwarz)
            print("<span class=\"captcha-number-s\">&nbsp;&nbsp;</span>");
          else
            print("<span class=\"captcha-number-w\">&nbsp;&nbsp;</span>");
        print("<span class=\"captcha-number-w\">&nbsp;</span>"); // Leerraum zwischen den Ziffern
      }
      print("</div>"); // Naechste Zeile
      //print("<br>"); // Naechste Zeile
    }
  }
}